
package Pojo;

import java.util.GregorianCalendar;
import java.util.HashMap;


/**Classe para objetos do tipo Pedido, onde serão contidos, valores e métodos 
* para o mesmo
 * 
 * @author Vitor
 */
public class Pedido{
    
    /**Classe para objetos do tipo Pedido, onde serão contidos, 
     * valores e metodos para o mesmo
     */ 
    
	private int codigo;
        private Cliente cliente;
        private GregorianCalendar data;
        private float Preco;
        private HashMap<Item,Integer> listaItens = new HashMap<Item, Integer>();
    
    /**Metodo para retorno de um cliente do tipo Cliente
     @return Cliente - Informações de um cliente*/
    public Cliente getCliente() {
        return cliente;
    }
    
    /**Metod para atribuir um cliente ao atributo cliente desta classe
     * 
     * @param cliente  Cliente - Contem informacoes de um cliente 
     */
    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }
    
    /**Metodo para retorno de um mapeamento 
     @return listaItens - Lista de itens em um pedido*/
    public HashMap<Item, Integer> getHash() {
        return listaItens;
    }
    
    /**Metodo que atribui um item de um pedido em uma lista de itens desse pedido
     * 
     * @param item Item - Contem informacoes de um item a ser adicionado a lista
     * @param quantidade - Quantidade dos itens adicionado
     */
    public void setItem(Item item, int quantidade) {
        if(!this.listaItens.containsKey(item)){
            this.listaItens.put(item,quantidade);
        }
    }
    
    /**Metodo que retorna o preco final de um pedido
     @return Preco - Preco total do pedido*/
    public float getPreco() {
        return Preco;
    }
    
    /**Metodo que atribui o valor final de um pedido ao atributo Preco
     * 
     * @param Preco float - Preco total dos itens no pedido 
     */
    public void setPreco(float Preco) {
        this.Preco = Preco;
    }
    
    /**Construtor da Classe Pedido
     * 
     */
    public Pedido() {
        
    }
    
    /**Metodo que retorna o valor do Codigo do pedido
     @return codigo - Codigo de um pedido*/
    public int getCodigo() {
        return codigo;
    }
    
    /**Metodo que atribui um codigo do pedido
     * 
     * @param codigo int - Codigo do pedido
     */
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }
    
    /**Metodo que retorna a data que o pedido foi feito
     @return data - data de um pedido*/
    public GregorianCalendar getData() {
        return data;
    }
   
    /**Metodo que atribui a data que o pedido foi feito
     * 
     * @param data GregorianCalendar - Data em que o pedido foi aberto 
     */
    public void setData(GregorianCalendar data) {
        this.data = data;
    }
}